
# 20.比赛配对问题
# 问题描述
# 小R正在组织一个比赛，比赛中有 n 支队伍参赛。比赛遵循以下独特的赛制：

# 如果当前队伍数为 偶数，那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛，且产生 n / 2 支队伍进入下一轮。
# 如果当前队伍数为 奇数，那么将会随机轮空并晋级一支队伍，其余的队伍配对。总共进行 (n - 1) / 2 场比赛，且产生 (n - 1) / 2 + 1 支队伍进入下一轮。
# 小R想知道在比赛中进行的配对次数，直到决出唯一的获胜队伍为止。

# 测试样例
# 样例1：

# 输入：n = 7
# 输出：6

# 样例2：

# 输入：n = 14
# 输出：13

# 样例3：

# 输入：n = 1
# 输出：0

def solution(n: int) -> int:
    # PLEASE DO NOT MODIFY THE FUNCTION SIGNATURE
    # write code here

    if n==1:
        return 0
    
    if n%2==0:
        return int(n/2) + solution(int(n/2))
    else :
        return int( (n-1)/2) +solution(int( (n-1)/2) +1)
    return 0

 

if __name__ == '__main__':
    print(solution(7) == 6)
    print(solution(14) == 13)
    print(solution(1) == 0)